package com.system.demo.mapper.dynamicSqlProvider;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;

public class PaperSqlProvider {
    public String getCombinedApplicationDataSql(@Param("status") Integer status,
                                                @Param("type") Integer type,
                                                @Param("finalLevel") Integer finalLevel,
                                                @Param("stuName") String stuName,
                                                @Param("startTime") String startTime,
                                                @Param("endTime") String endTime,
                                                @Param("stuClass") String stuClass) {
        return new SQL() {{
            SELECT("*");
            FROM("paper");
            WHERE("1=1"); // 使用 1=1 来确保 WHERE 子句总是存在
            if (status != null) {
                WHERE("status = #{status}");
            }
            if (type != null) {
                WHERE("type = #{type}");
            }
            if (finalLevel != null) {
                WHERE("final_level = #{finalLevel}");
            }
            if (stuName != null && !stuName.isEmpty()) {
                WHERE("stu_name LIKE CONCAT('%', #{stuName}, '%')");
            }
            if (startTime != null && !startTime.isEmpty()) {
                WHERE("award_time >= #{startTime}");
            }
            if (endTime != null && !endTime.isEmpty()) {
                WHERE("award_time <= #{endTime}");
            }
            if (stuClass != null && !stuClass.isEmpty()) {
                WHERE("stu_class LIKE CONCAT('%', #{stuClass}, '%')");
            }
        }}.toString();
    }
}
